package com.itheima;


import java.util.Comparator;
import java.util.TreeSet;

/**
 * TreeSet集合
 * 不重复、无索引、可排序
 * 排序：默认从小到大
 * 默认排序规则
 * 对于数值型：Integer、Double，官方默认升序
 * 对于字符串：String，官方默认升序
 * 对于自定义类型如Student对象，TreeSet无法直接排序，需要自己定义排序规则
 *
 * 可变参数
 */
public class TreeSetDemo {
    public static void main(String[] args) {
        test1();
    }


//ctrl+alt+m
    private static void text0() {
        //集合智能存储引用数据类型,不能存静态数据类型
        TreeSet<Integer> set1 = new TreeSet<>();
        //1.---》包装Integer对象----》自动装箱，1自动装箱变为引用数据对象
        set1.add(5);
        set1.add(3);
        set1.add(2);
        set1.add(4);
        set1.add(6);
        set1.add(1);
        for (Integer integer : set1){
            System.out.println(integer);
        }
    }

    public static void test1(){
        TreeSet<Student> set = new TreeSet<>();
        Student s1 = new Student("张三", 20);
        Student s2 = new Student("李四", 18);
        Student s3 = new Student("王五", 22);
        Student s4 = new Student("赵六", 19);
        set.add(s1);
        set.add(s2);
        set.add(s3);
        set.add(s4);
        for (Student student : set){
            System.out.println(student.getName()+"---"+student.getAge());
        }
    }
    public static void test2(){
        //匿名内部类对象
//        Comparator<Student> comparator = new Comparator<Student>() {
//            @Override
//            public int compare(Student o1, Student o2) {
//                //正序，o1-o2
//                return o1.getAge()-o2.getAge();
//            }
//        };
        //lambda表达式
        Comparator<Student> comparator = (o1,o2)->o1.getAge()-o2.getAge();
        TreeSet<Student> set = new TreeSet<>(comparator);
        set.add(new Student("张三", 20));
        set.add(new Student("李四", 18));
        set.add(new Student("王五", 22));
        set.add(new Student("赵六", 19));
        for (Student student : set){
            System.out.println(student.getName()+"---"+student.getAge());
        }


    }
    //可变参数智能是最后一个
    public static int sum(int ...a){//数组
        int total = 0;
        for (int i = 0; i < a.length; i++) {
            total+=a[i];

        }
        return total;

    };
}
